/*
 *	DLL 진입점
 */

#ifdef	_USRDLL

#include <windows.h>

static HINSTANCE	g_dll;

BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
{
	lpvReserved;

	switch( fdwReason )
	{
	case DLL_PROCESS_ATTACH:	// 프로세스 기동 혹은 LoadLibrary 호출시
		{
			/*
			 *	여기서 뭔가 실패하면 FALSE를 리턴. 그 이외에는 리턴값이 쓸 일이 없음
			 *	TLS(스레드 로컬 스토리지) 작성, 오브젝트 작성, 파일 오픈만 할것.
			 *	유저 함수, COM, RPC, 소켓, 다른 DLL 오픈 등은 하지마라. 골치아파진다.
			 */
			g_dll = hinstDLL;
		}
		break;

	case DLL_THREAD_ATTACH:		// 프로세스에서 새로운 스레드를 작성했을때
		{
		}
		break;

	case DLL_THREAD_DETACH:		// 스레드 종료시
		{
		}
		break;

	case DLL_PROCESS_DETACH:	// DLL 로드 실패, 프로세스 종료, FreeLibrary 등
		{
			// TLS를 썼으면 여기서 해방
		}
		break;
	}
	return TRUE;
}

#endif	// _USRDLL